package xgame.chat.handler;

import xgame.AbstractXhandler;
import xgame.chat.bizservice.Services;
import xgame.chat.cmd.EntryCmd;
import xgame.chat.model.ChatUser;
import xgame.chat.result.EntryResult;

/**
 * 进入聊天室
 * 
 * @author AfritXia
 * @version $Rev: 97 $
 *
 */
public class EntryHandler extends AbstractXhandler<EntryCmd> {
	/**
	 * 用户 Id
	 * 
	 */
	private static final String USER_ID = "__userId";

	/**
	 * 用户名称
	 * 
	 */
	private static final String USER_NAME = "__userName";

	@Override
	public void handle() {
		// 获取用户 Id
		Object objUserId = this.getSession().getAttribute(USER_ID);
		// 获取用户名称
		Object objUserName = this.getSession().getAttribute(USER_NAME);

		if (objUserId == null) {
			return;
		}

		ChatUser u = new ChatUser();

		// 会话 Id
		u.setSessionId(this.getSession().getId());
		// 用户 Id
		u.setUserId((Long)objUserId);
		// 用户名称
		u.setUserName((String)objUserName);

		// 进入聊天室
		EntryResult result = Services.getChatService().entry(
			this.getCommand().getRoomName(), u
		);

		if (result == null) {
			return;
		}

		// 设置会话 Id
		result.setSessionId(this.getSession().getId());
		// 写出结果
		this.getOutput().write(result);
	}
}
